package com.woniuxy.pxxt.service;


import com.woniuxy.pxxt.common.result.Result;
import com.woniuxy.pxxt.common.vo.CourseEditVo;
import com.woniuxy.pxxt.common.vo.CourseManageVo;
import com.woniuxy.pxxt.dto.CourseVideoScheduleDto;
import com.woniuxy.pxxt.entity.Course;

/**
 * 是培训项目下的阶段(PxxtCourse)表服务接口
 *
 * @author makejava
 * @since 2022-03-07 16:28:19
 */
public interface CourseService {

    /**
     * <p>TODO: 课程表分页查询
     * @description
     * @since 2022/3/8 10:15
     * @author QinYD
     * @param currentPage           当前页
     * @param pageSize              页大小
     * @param courseManageVo        课程管理页vo
     * @return com.woniuxy.pxxt.common.result.Result
     */
    Result queryByPage(int currentPage, int pageSize, CourseManageVo courseManageVo);

    /***
     * <p>TODO:
     * @description
     * @since 2022/3/8 17:47
     * @author QinYD
     * @param trainId       培训id
     * @param currentPage   当前页
     * @param pageSize      页大小
     * @param course        课程对象
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result queryByPage(int trainId, int currentPage, int pageSize, Course course);

    /***
     * <p>TODO: 课程表按主键id来查询
     * @description
     * @since 2022/3/8 10:56
     * @author QinYD
     * @param id 主键
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result queryById(Integer id);

    /***
     * <p>TODO: 课程表新增方法,新增成功返回数据中带回了id
     * @description
     * @since 2022/3/8 11:12
     * @author QinYD
     * @param courseEditVo
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result insert(CourseEditVo courseEditVo);

    /***
     * <p>TODO: 课程表更新方法，更新成功返回主键id
     * @description
     * @since 2022/3/8 12:05
     * @author QinYD
     * @param courseEditVo
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result update(CourseEditVo courseEditVo);

    /***
     * <p>TODO: 课程表按id来进行逻辑删除
     * @description
     * @since 2022/3/8 12:07
     * @author QinYD
     * @param id
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result deleteById(int id);
    
    /***
     * <p>TODO: 查询所有部门经理姓名
     * @description
     * @since 2022/3/8 15:59
     * @author QinYD
     * @param 
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result queryManagerName();
    

    /***
     * <p>TODO: 查询所有的培训id和名称
     * @description
     * @since 2022/3/8 17:47
     * @author QinYD
     * @param 
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result queryAllTrain();

    /***
     * <p>TODO: 查询所有的课程表的查询条件
     * @description
     * @since 2022/3/9 16:28
     * @author QinYD
     * @param
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result queryAllCondition();
    


    /***
     * <p>TODO: 查询课程页面的所有资源
     * @description
     * @since 2022/3/14 17:10
     * @author QinYD
     * @param id
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result findCourse(Integer id);
    
    /***
     * <p>TODO: 用户的课程视频进度记录
     * @description
     * @since 2022/3/17 18:50
     * @author QinYD
     * @param courseVideoScheduleDto
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result saveSchedule(CourseVideoScheduleDto courseVideoScheduleDto);
    
    /***
     * <p>TODO: 查询用户课程视频的进度记录
     * @description
     * @since 2022/3/17 20:03
     * @author QinYD
     * @param courseVideoScheduleDto
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result queryCourseVideoSchedule(CourseVideoScheduleDto courseVideoScheduleDto);

    /***
     * <p>TODO: 查询用户当前课程的所有视频的进度
     * @description
     * @since 2022/3/17 23:02
     * @author QinYD
     * @param courseVideoScheduleDto
     * @return com.woniuxy.pxxt.common.result.Result
     */

    Result queryCourseAllVideoSchedule(CourseVideoScheduleDto courseVideoScheduleDto);
}
